Definition

Let f:{0,1}{0,1}f : \{0,1\}^* \to \{0,1\}^* and let T:T: \mathbb{N} \to \mathbb{N} be some functions, and let MM be a Turing machine. Say that MM computes ff if for every x{0,1}x \in \{0,1\}^*, when MM is initialized to start configuration on input xx, it halts with f(x)f(x) written on its output tape. Say MM computes ff in T(n)T(n)-time if its computation on every input xx requires at most T(|x|)T(\lvert x \rvert) steps.

A function T:T: \mathbb{N} \to \mathbb{N} is time-constructible if T(n)nT(n) \geq n and there is a TM MM that computes the function xT(|x|)x \mapsto \llcorner T(\lvert x\rvert ) \lrcorner in time T(n)T(n). (where T(|x|)\llcorner T(\lvert x\rvert ) \lrcorner denotes binary representation of number T(|x|)T(\lvert x\rvert ))

Notes


References

  1. S. Arora, B. Barak. Computational Complexity: A Modern Approach, Cambridge University Press, 2009, pp. 1, 15-16.